package eu.telecom_bretagne.RECRUT.service;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import eu.telecom_bretagne.RECRUT.data.dao.ArchiveDAO;
import eu.telecom_bretagne.RECRUT.data.dao.DossierCandidatureDAO;
import eu.telecom_bretagne.RECRUT.data.dao.EmployeDAO;
import eu.telecom_bretagne.RECRUT.data.model.Archive;
import eu.telecom_bretagne.RECRUT.data.model.DossierCandidature;
import eu.telecom_bretagne.RECRUT.data.model.Employe;

/**
 * Session Bean implementation class ServiceArchive
 */
@Stateless
@LocalBean
public class ServiceArchive implements IServiceArchive {

	@EJB
	ArchiveDAO archiveDAO;
	@EJB
	DossierCandidatureDAO dossierCandidatureDAO;
	@EJB
	EmployeDAO employeDAO;

	/**
	 * Default constructor.
	 */
	public ServiceArchive() {
	}

	@Override
	public List<Archive> listeArchives() {

		return archiveDAO.findAll();
	}

	@Override
	public Archive lireArchive(int id) {

		return archiveDAO.findById(id);
	}

	@Override
	public void modifierArchive(int id, String nouveauTitre) {

		Archive archive = lireArchive(id);
		archive.setTitre(nouveauTitre);

		/*
		 * archive.setDateArchive(nouvelleDateArchive);
		 * archive.setDossierCandidature(nouveauDossierCandidature);
		 * archive.setEmploye(nouvelEmploye);
		 */
	}

	@Override
	public Archive creerArchive(String nouveauTitre, int idEmploye,
			int idDossier) {

		DossierCandidature dossier = dossierCandidatureDAO.findById(idDossier);
		Employe employe = employeDAO.findById(idEmploye);
		Archive archive = new Archive();

		archive.setTitre(nouveauTitre);
		archive.setDossierCandidature(dossier);
		archive.setEmploye(employe);
		archive.setDateArchive(new java.util.Date());

		employe.getArchives().add(archive);
		dossier.getArchives().add(archive);

		archiveDAO.create(archive);
		dossierCandidatureDAO.update(dossier);
		employeDAO.update(employe);

		return archive;
	}

	@Override
	public void supprimerArchive(int id) {

		Archive archive = archiveDAO.findById(id);
		Employe employeArchive = archive.getEmploye();
		DossierCandidature dossierArchive = archive.getDossierCandidature();

		employeArchive.getArchives().remove(archive);
		dossierArchive.getArchives().remove(archive);

		employeDAO.update(employeArchive);
		dossierCandidatureDAO.update(dossierArchive);
		archiveDAO.delete(archive);
	}

}
